package com.cloud.pole.weixin.model.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotEmpty;

import lombok.Data;

/**
 * @author 
 */
@Table(name="wx_user")
@Data
public class WxUser implements Serializable {
    /**
     * 是否关注（-1：取消 0：未关注 1：已关注）
     */
	public static final int SUBSCRIBESTATUS_NO  = -1;
	public static final int SUBSCRIBESTATUS_DEFAULT  = 0;
	public static final int SUBSCRIBESTATUS_YES = 1;
	
    /**
     * id
     */
    @Id
    @Column(name="wx_user_id")
    private Long wxUserId;

    /**
     * 内部定义微信应用id
     */
    @NotEmpty
    @Column(name="wx_app_id")
    private Integer wxAppId;

    /**
     * open_id
     */
    @NotEmpty
    @Column(name="open_id")
    private String openId;

    /**
     * 微信应用id
     */
    @NotEmpty
    @Column(name="app_id")
    private String appId;

    /**
     * 用户昵称
     */
    @Column(name="nick_name")
    private String nickName;

    /**
     * 用户头像
     */
    @Column(name="avatar_url")
    private String avatarUrl;

    /**
     * 用户所在国家
     */
    @Column(name="country")
    private String country;

    /**
     * 用户所在省份
     */
    @Column(name="province")
    private String province;

    /**
     * 用户所在城市
     */
    @Column(name="city")
    private String city;

    /**
     * union_id
     */
    @Column(name="union_id")
    private String unionId;

    /**
     * 性别（0：未知、1：男、2：女）
     */
    @Column(name="gender")
    private Integer gender;

    /**
     * 创建时间
     */
    @Column(name="create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @Column(name="update_time")
    private Date updateTime;

    /**
     * 是否关注（-1：取消 0：未关注 1：已关注）
     */
    @Column(name="subscribe_status")
    private Integer subscribeStatus;
    
    /**
     * 关注时间
     */
    @Column(name="subscribe_time")
    private Date subscribeTime;
    
    /**
     * 取消关注时间
     */
    @Column(name="unsubscribe_time")
    private Date unsubscribeTime;
    
    private static final long serialVersionUID = 1L;

}